]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
search: Junk the OpenSearch system
authorJasper St. Pierre <jstpierre@mecheye.net>
Tue, 21 Feb 2012 20:25:36 +0000 (15:25 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Mon, 20 Aug 2012 01:19:17 +0000 (21:19 -0400)
The original design for the overview had buttons for searching for
Wikipedia and Google, but in practice this is a bad idea. The buttons
are the default activations, meaning that using the overview as a
fluent motion of launching something - "firefxo<Enter>", will launch
Google/Wikipedia.

https://bugzilla.gnome.org/show_bug.cgi?id=670168

data/Makefile.am
data/open-search-providers/google.xml [deleted file]
data/open-search-providers/wikipedia.xml [deleted file]
js/ui/search.js
js/ui/searchDisplay.js
js/ui/viewSelector.js
src/shell-util.c
src/shell-util.h

index a3f58144782e570086918ed22254a31834c65cd7..f36951629410d34bb3d4aa9418db643a9329dde2 100644 (file)
@@ -10,11 +10,6 @@ desktop_DATA = gnome-shell.desktop gnome-shell-extension-prefs.desktop
 
 @INTLTOOL_DESKTOP_RULE@
 
-searchprovidersdir = $(pkgdatadir)/open-search-providers
-dist_searchproviders_DATA =                            \
-       open-search-providers/google.xml                \
-       open-search-providers/wikipedia.xml
-
 introspectiondir = $(datadir)/dbus-1/interfaces
 introspection_DATA = org.gnome.ShellSearchProvider.xml
 
diff --git a/data/open-search-providers/google.xml b/data/open-search-providers/google.xml
deleted file mode 100644 (file)
index daaa254..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
-<ShortName>Google</ShortName>
-<Description>Google Search</Description>
-<InputEncoding>UTF-8</InputEncoding>
-<Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image>
-<Url type="text/html" method="GET" template="http://www.google.com/search?q={searchTerms}"/>
-</OpenSearchDescription>
diff --git a/data/open-search-providers/wikipedia.xml b/data/open-search-providers/wikipedia.xml
deleted file mode 100644 (file)
index 4c61256..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
-<ShortName>Wikipedia</ShortName>
-<Description>Wikipedia, the free encyclopedia</Description>
-<InputEncoding>UTF-8</InputEncoding>
-<Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9%2FAAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiIgzuIV4iIiIhndo53KIiIiB%2FWvXoYiIiIfEZfWBSIiIEGi%2FfoqoiIgzuL84i9iIjpGIoMiEHoiMkos3FojmiLlUipYliEWIF%2BiDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</Image>
-<Url type="text/html" method="GET" template="http://{language}.wikipedia.org/wiki/Special:Search?search={searchTerms}"/>
-<!-- The criterion for being below is being listed with more than 100,000
-articles on http://meta.wikimedia.org/wiki/List_of_Wikipedias -->
-<Language>ar</Language>
-<Language>bg</Language>
-<Language>ca</Language>
-<Language>cs</Language>
-<Language>da</Language>
-<Language>de</Language>
-<Language>en</Language>
-<Language>eo</Language>
-<Language>es</Language>
-<Language>fa</Language>
-<Language>fi</Language>
-<Language>fr</Language>
-<Language>he</Language>
-<Language>hu</Language>
-<Language>id</Language>
-<Language>it</Language>
-<Language>ja</Language>
-<Language>ko</Language>
-<Language>lt</Language>
-<Language>nl</Language>
-<Language>no</Language>
-<Language>pl</Language>
-<Language>pt</Language>
-<Language>ro</Language>
-<Language>ru</Language>
-<Language>sk</Language>
-<Language>sl</Language>
-<Language>sr</Language>
-<Language>sv</Language>
-<Language>tr</Language>
-<Language>uk</Language>
-<Language>vi</Language>
-<Language>vo</Language>
-<Language>war</Language>
-<Language>zh</Language>
-</OpenSearchDescription>
index 447a4395d6876575a7f3bb0df02350d73e0c8893..22f53d9133890943bf7781d8bcafd7ae32c29409 100644 (file)
@@ -10,8 +10,6 @@ const Util = imports.misc.util;
 const FileUtils = imports.misc.fileUtils;
 const Main = imports.ui.main;
 
-const DISABLED_OPEN_SEARCH_PROVIDERS_KEY = 'disabled-open-search-providers';
-
 // Not currently referenced by the search API, but
 // this enumeration can be useful for provider
 // implementations.
@@ -169,99 +167,6 @@ const SearchProvider = new Lang.Class({
 });
 Signals.addSignalMethods(SearchProvider.prototype);
 
-const OpenSearchSystem = new Lang.Class({
-    Name: 'OpenSearchSystem',
-
-    _init: function() {
-        this._providers = [];
-        global.settings.connect('changed::' + DISABLED_OPEN_SEARCH_PROVIDERS_KEY, Lang.bind(this, this._refresh));
-        this._refresh();
-    },
-
-    getProviders: function() {
-        let res = [];
-        for (let i = 0; i < this._providers.length; i++)
-            res.push({ id: i, name: this._providers[i].name });
-
-        return res;
-    },
-
-    setSearchTerms: function(terms) {
-        this._terms = terms;
-    },
-
-    _checkSupportedProviderLanguage: function(provider) {
-        if (provider.url.search(/{language}/) == -1)
-            return true;
-
-        let langs = GLib.get_language_names();
-
-        langs.push('en');
-        let lang = null;
-        for (let i = 0; i < langs.length; i++) {
-            for (let k = 0; k < provider.langs.length; k++) {
-                if (langs[i] == provider.langs[k])
-                    lang = langs[i];
-            }
-            if (lang)
-                break;
-        }
-        provider.lang = lang;
-        return lang != null;
-    },
-
-    activateResult: function(id, params) {
-        let searchTerms = this._terms.join(' ');
-
-        let url = this._providers[id].url.replace('{searchTerms}', encodeURIComponent(searchTerms));
-        if (url.match('{language}'))
-            url = url.replace('{language}', this._providers[id].lang);
-
-        try {
-            Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
-        } catch (e) {
-            // TODO: remove this after glib will be removed from moduleset
-            // In the default jhbuild, gio is in our prefix but gvfs is not
-            Util.spawn(['gvfs-open', url])
-        }
-
-        Main.overview.hide();
-    },
-
-    _addProvider: function(fileName) {
-        let path = global.datadir + '/open-search-providers/' + fileName;
-        let source = Shell.get_file_contents_utf8_sync(path);
-        let [success, name, url, langs, icon_uri] = Shell.parse_search_provider(source);
-        let provider ={ name: name,
-                        url: url,
-                        id: this._providers.length,
-                        icon_uri: icon_uri,
-                        langs: langs };
-        if (this._checkSupportedProviderLanguage(provider)) {
-            this._providers.push(provider);
-            this.emit('changed');
-        }
-    },
-
-    _refresh: function() {
-        this._providers = [];
-        let names = global.settings.get_strv(DISABLED_OPEN_SEARCH_PROVIDERS_KEY);
-        let file = Gio.file_new_for_path(global.datadir + '/open-search-providers');
-        FileUtils.listDirAsync(file, Lang.bind(this, function(files) {
-            for (let i = 0; i < files.length; i++) {
-                let enabled = true;
-                let name = files[i].get_name();
-                for (let k = 0; k < names.length; k++)
-                    if (names[k] == name)
-                        enabled = false;
-                if (enabled)
-                    this._addProvider(name);
-            }
-        }));
-    }
-});
-Signals.addSignalMethods(OpenSearchSystem.prototype);
-
 const SearchSystem = new Lang.Class({
     Name: 'SearchSystem',
 
index 508751ebac728cd010b09d722ff74e5fefa4115d..f6a383265ec33f24f78c490f23e0634a3e046603 100644 (file)
@@ -173,10 +173,9 @@ const GridSearchResults = new Lang.Class({
 const SearchResults = new Lang.Class({
     Name: 'SearchResults',
 
-    _init: function(searchSystem, openSearchSystem) {
+    _init: function(searchSystem) {
         this._searchSystem = searchSystem;
         this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));
-        this._openSearchSystem = openSearchSystem;
 
         this.actor = new St.BoxLayout({ name: 'searchResults',
                                         vertical: true });
@@ -215,55 +214,10 @@ const SearchResults = new Lang.Class({
         this._searchProvidersBox = new St.BoxLayout({ style_class: 'search-providers-box' });
         this.actor.add(this._searchProvidersBox);
 
-        this._openSearchProviders = [];
-        this._openSearchSystem.connect('changed', Lang.bind(this, this._updateOpenSearchProviderButtons));
-        this._updateOpenSearchProviderButtons();
-
         this._highlightDefault = false;
         this._defaultResult = null;
     },
 
-    _updateOpenSearchProviderButtons: function() {
-        for (let i = 0; i < this._openSearchProviders.length; i++)
-            this._openSearchProviders[i].actor.destroy();
-        this._openSearchProviders = this._openSearchSystem.getProviders();
-        for (let i = 0; i < this._openSearchProviders.length; i++)
-            this._createOpenSearchProviderButton(this._openSearchProviders[i]);
-    },
-
-    _createOpenSearchProviderButton: function(provider) {
-        let button = new St.Button({ style_class: 'dash-search-button',
-                                     reactive: true,
-                                     can_focus: true,
-                                     x_fill: true,
-                                     y_align: St.Align.MIDDLE });
-        let bin = new St.Bin({ x_fill: false,
-                               x_align:St.Align.MIDDLE });
-        button.connect('clicked', Lang.bind(this, function() {
-            this._openSearchSystem.activateResult(provider.id);
-        }));
-        let title = new St.Label({ text: provider.name,
-                                   style_class: 'dash-search-button-label' });
-
-        button.label_actor = title;
-        bin.set_child(title);
-        button.set_child(bin);
-        provider.actor = button;
-
-        button.setSelected = function(selected) {
-            if (selected)
-                button.add_style_pseudo_class('selected');
-            else
-                button.remove_style_pseudo_class('selected');
-        };
-        button.activate = Lang.bind(this, function() {
-            this._openSearchSystem.activateResult(provider.id);
-        });
-        button.actor = button;
-
-        this._searchProvidersBox.add(button);
-    },
-
     createProviderMeta: function(provider) {
         let providerBox = new St.BoxLayout({ style_class: 'search-section',
                                              vertical: true });
@@ -323,8 +277,6 @@ const SearchResults = new Lang.Class({
 
     doSearch: function (searchString) {
         this._searchSystem.updateSearch(searchString);
-        let terms = this._searchSystem.getTerms();
-        this._openSearchSystem.setSearchTerms(terms);
     },
 
     _metaForProvider: function(provider) {
index c4a6009105d26eeb0740f0754165e3a0d8aa2afa..2d112720f1202b9a238a47a176e160cc33ae4401 100644 (file)
@@ -103,7 +103,6 @@ const SearchTab = new Lang.Class({
         this._searchTimeoutId = 0;
 
         this._searchSystem = new Search.SearchSystem();
-        this._openSearchSystem = new Search.OpenSearchSystem();
 
         this._entry = new St.Entry({ name: 'searchEntry',
                                      /* Translators: this is the text displayed
@@ -127,7 +126,7 @@ const SearchTab = new Lang.Class({
 
         this._iconClickedId = 0;
 
-        this._searchResults = new SearchDisplay.SearchResults(this._searchSystem, this._openSearchSystem);
+        this._searchResults = new SearchDisplay.SearchResults(this._searchSystem);
         this.parent(this._entry, this._searchResults.actor, _("Search"), 'edit-find');
 
         this._text.connect('text-changed', Lang.bind(this, this._onTextChanged));
index 7dc87d3a426c7f5d8dae6c01ed02cbdc1af20172..8f58d6389a3fcba00df7b4b3bac9ea98e0009210 100644 (file)
 #include <langinfo.h>
 #endif
 
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-#include <libxml/xmlmemory.h>
-
 #ifdef WITH_SYSTEMD
 #include <systemd/sd-daemon.h>
 #include <systemd/sd-login.h>
@@ -646,134 +642,6 @@ shell_get_file_contents_utf8_sync (const char *path,
   return contents;
 }
 
-/**
- * shell_parse_search_provider:
- * @data: description of provider
- * @name: (out): location to store a display name
- * @url: (out): location to store template of url
- * @langs: (out) (transfer full) (element-type utf8): list of supported languages
- * @icon_data_uri: (out): location to store uri
- * @error: location to store GError
- *
- * Returns: %TRUE on success
- */
-gboolean
-shell_parse_search_provider (const char    *data,
-                             char         **name,
-                             char         **url,
-                             GList        **langs,
-                             char         **icon_data_uri,
-                             GError       **error)
-{
-  xmlDocPtr doc = xmlParseMemory (data, strlen (data));
-  xmlNode *root;
-
-  *name = NULL;
-  *url = NULL;
-  *icon_data_uri = NULL;
-  *langs = NULL;
-
-  if (!doc)
-    {
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Malformed xml");
-      return FALSE;
-    }
-
-  root = xmlDocGetRootElement (doc);
-  if (root && root->name && xmlStrcmp (root->name, (const xmlChar *)"OpenSearchDescription") == 0)
-    {
-      xmlNode *child;
-      for (child = root->children; child; child = child->next)
-        {
-            if (!child->name)
-              continue;
-            if (xmlStrcmp (child->name, (const xmlChar *)"Language") == 0)
-              {
-                xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
-                if (!val)
-                  continue;
-                *langs = g_list_append (*langs, g_strdup ((char *)val));
-                xmlFree (val);
-              }
-            if (!*name && xmlStrcmp (child->name, (const xmlChar *)"ShortName") == 0)
-              {
-                xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
-                *name = g_strdup ((char *)val);
-                xmlFree (val);
-              }
-            if (!*icon_data_uri && xmlStrcmp (child->name, (const xmlChar *)"Image") == 0)
-              {
-                xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1);
-                if (val)
-                  *icon_data_uri = g_strdup ((char *)val);
-                xmlFree (val);
-              }
-            if (!*url && xmlStrcmp (child->name, (const xmlChar *)"Url") == 0)
-              {
-                xmlChar *template;
-                xmlChar *type;
-
-                type = xmlGetProp(child, (const xmlChar *)"type");
-                if (!type)
-                  continue;
-
-                if (xmlStrcmp (type, (const xmlChar *)"text/html") != 0)
-                  {
-                    xmlFree (type);
-                    continue;
-                  }
-                xmlFree (type);
-
-                template = xmlGetProp(child, (const xmlChar *)"template");
-                if (!template)
-                  continue;
-                *url = g_strdup ((char *)template);
-                xmlFree (template);
-              }
-        }
-    }
-  else
-    {
-      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Invalid OpenSearch document");
-      xmlFreeDoc (doc);
-      return FALSE;
-    }
-  xmlFreeDoc (doc);
-  if (*icon_data_uri && *name && *url)
-    return TRUE;
-
-  if (*icon_data_uri)
-    g_free (*icon_data_uri);
-  else
-    g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                 "search provider doesn't have icon");
-
-  if (*name)
-    g_free (*name);
-  else if (error && !*error)
-    g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                 "search provider doesn't have ShortName");
-
-  if (*url)
-    g_free (*url);
-  else if (error && !*error)
-    g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                 "search provider doesn't have template for url");
-
-  if (*langs)
-    {
-      g_list_foreach (*langs, (GFunc)g_free, NULL);
-      g_list_free (*langs);
-    }
-
-  *url = NULL;
-  *name = NULL;
-  *icon_data_uri = NULL;
-  *langs = NULL;
-
-  return FALSE;
-}
-
 /**
  * shell_session_is_active_for_systemd:
  *
index c1b7c483955dacd3fdfb63d792cdb88249996e43..b025a03a94b1686418beed9c2cd991adc3f91703 100644 (file)
@@ -33,13 +33,6 @@ gboolean shell_write_string_to_stream          (GOutputStream    *stream,
 char    *shell_get_file_contents_utf8_sync     (const char       *path,
                                                 GError          **error);
 
-gboolean shell_parse_search_provider           (const char       *data,
-                                                char            **name,
-                                                char            **url,
-                                                GList           **langs,
-                                                char            **icon_data_uri,
-                                                GError          **error);
-
 gboolean shell_session_is_active_for_systemd (void);
 
 gboolean shell_util_wifexited                  (int               status,